/**
 * 
 */
package br.skytef.stmanager.utils;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Timestamp;
import java.util.Locale;

import jxl.Sheet;
import jxl.Workbook;
import jxl.WorkbookSettings;
import jxl.read.biff.BiffException;

/**
 * @author Ivam Henrique Marques dos Santos
 *         email: ivam.santos@skytef.com.br
 *         skype: ivam.santos.skytef
 *         telefone: +55 11 96214-7543
 */
public class PlanFinanceiro {

	private static Workbook planilha;
	Sheet sheet;

	private String  mensagemErro;
	public String getMensagemErro() {return mensagemErro;}
	public void setMensagemErro(String mensagemErro) {this.mensagemErro = mensagemErro;}

	private Timestamp dataInclusao;
	public Timestamp getDataInclusao() {return dataInclusao;}
	public void setDataInclusao(Timestamp dataInclusao) {this.dataInclusao = dataInclusao;}

	private String parceiro;
	public String getParceiro() {return parceiro;}
	public void setParceiro(String parceiro) {this.parceiro = parceiro;}

	private String servico;
	public String getServico() {return servico;}
	public void setServico(String servico) {this.servico = servico;}

	private int qtdLojas;
	public int getQtdLojas() {return qtdLojas;}
	public void setQtdLojas(int qtdLojas) {this.qtdLojas = qtdLojas;}

	private static String linhaErrada = "";
	public String getLinhaErrada() {return linhaErrada;}

	private String razaoSocial;
	public String getRazaoSocial() {return razaoSocial;}
	public void setRazaoSocial(String razaoSocial) {this.razaoSocial = razaoSocial;}

	private String nomeFantasia;
	public String getNomeFantasia() {return nomeFantasia;}
	public void setNomeFantasia(String nomeFantasia) {this.nomeFantasia = nomeFantasia;}

	private long cnpj;
	public long getCnpj() {return cnpj;}
	public void setCnpj(long cnpj) {this.cnpj = cnpj;}

	private double valorFaturado;
	public double getValorFaturado() {return valorFaturado;}
	public void setValorFaturado(double valorFaturado) {this.valorFaturado = valorFaturado;}

	public PlanFinanceiro(InputStream is) throws BiffException, IOException{
		WorkbookSettings workbookSettings = new WorkbookSettings();
		workbookSettings.setEncoding( "Cp1252" );
		workbookSettings.setLocale(new Locale("pt", "BR"));
		workbookSettings.setExcelDisplayLanguage("PT");
		workbookSettings.setExcelRegionalSettings("BR");
		planilha = Workbook.getWorkbook(is , workbookSettings);
		sheet = planilha.getSheet(0);
	}

	public boolean validar(){
		try{
			if(!sheet.getCell(0,0).getContents().toUpperCase().trim().equals("LOJA")){
				mensagemErro = "Erro: Coluna \"LOJA\"";
				return false;
			}		
			else if(!sheet.getCell(1,0).getContents().toUpperCase().trim().equals("NOME FANTASIA")){
				mensagemErro = "Erro: Coluna \"NOME FANTASIA\"";
				return false;
			}
			else if(!sheet.getCell(2,0).getContents().toUpperCase().trim().equals("CNPJ")){
				mensagemErro = "Erro: Coluna \"CNPJ\"";
				return false;
			}
			else if(!sheet.getCell(3,0).getContents().toUpperCase().trim().equals("LOJAS")){
				mensagemErro = "Erro: Coluna \"LOJAS\"";
				return false;
			}
			else if(!sheet.getCell(4,0).getContents().toUpperCase().trim().equals("SERVIÇO")){
				mensagemErro = "Erro: Coluna \"SERVIÇO\"";
				return false;
			}
			else if(!sheet.getCell(5,0).getContents().toUpperCase().trim().equals("VALOR")){
				mensagemErro = "Erro: Coluna \"VALOR\"";
				return false;
			}else if(!sheet.getCell(6,0).getContents().toUpperCase().trim().equals("INÍCIO")){
				mensagemErro = "Erro: Coluna \"INÍCIO\"";
				return false;
			}else if(!sheet.getCell(7,0).getContents().toUpperCase().trim().equals("PARCEIRO")){
				mensagemErro = "Erro: Coluna \"PARCEIRO\"";
				return false;
			}else 
				return true;
		}catch (Exception e){
			setMensagemErro("Planilha inválida");
			return false;
		}
	}

	public void importarlinha(int i){

		setRazaoSocial(sheet.getCell(0,i).getContents().toUpperCase().trim());
		setNomeFantasia(sheet.getCell(1,i).getContents().toUpperCase().trim());
		setCnpj(new Cnpj().StringParaInteiro(sheet.getCell(2,i).getContents()));
		setQtdLojas(StrInt(sheet.getCell(3,i).getContents()));
		if(!sheet.getCell(5,i).getContents().isEmpty())
			setValorFaturado(StrDoble(sheet.getCell(5,i).getContents()));
		setServico(sheet.getCell(4,i).getContents());
		try{
			setDataInclusao(Timestamp.valueOf(sheet.getCell(6,i).getContents()));
		}catch (Exception e){
			setDataInclusao(null);
		}
		setParceiro(sheet.getCell(7,i).getContents());

		linhaErrada = ("Erro na linha:"+(i+1)+" CNPJ: " +sheet.getCell(2, i).getContents());
	}

	public int qtlinha(){
		Sheet sheet = planilha.getSheet(0);
		return sheet.getRows();
	}

	public Double StrDoble(String valor){
		Double num = 0.0;
		String aux = valor;
		try {
			if(valor.contains(",")){
				aux = valor.replace(".", "");
			}
			aux = aux.replace(",",".");
			num = Double.parseDouble(aux);
		} catch (Exception e) {
			System.out.println("Erro na conversão de Double: "+e);
		}
		return num;
	}
	public int StrInt(String valor){
		int num;
		try {
			num = Integer.parseInt(valor);
		} catch (Exception e) {
			num = 0;
		}		
		return num;
	}
}
